abstract class AbstractIM<T> {
  Stream<T> get messages;
  void sendMessage(T message);
  void connect();
  void disconnect();
}
